package com.lance.answer.gui.answer.gk.answer.lms.batch.task;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.lance.answer.dto.CompleteInfo;
import com.lance.answer.gui.answer.Util;
import com.lance.answer.gui.answer.gk.answer.lms.batch.dto.LmsWatchDTO;
import com.lance.answer.gui.answer.gk.answer.lms.util.LmsUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;


@Slf4j
public class BatchDoBigHomeWorkTask extends Thread {


    public static ExecutorService pool = Executors.newSingleThreadExecutor();

    private final String driverPath;
    private final LinkedBlockingDeque<LmsWatchDTO> watchDTOS;

    public BatchDoBigHomeWorkTask(String driverPath, LinkedBlockingDeque<LmsWatchDTO> watchDTOS) {
        this.driverPath = driverPath;
        this.watchDTOS = watchDTOS;
    }

    @SneakyThrows
    @Override
    public void run() {

        while (watchDTOS.size() > 0) {
            LmsWatchDTO lmsWatchDTO = watchDTOS.take();
            String userName = lmsWatchDTO.getUsername();
            String password = lmsWatchDTO.getPassword();
            log.info("任务：{} 剩余 {} 行 用户名：{} 密码：{}",
                    Thread.currentThread().getName(), watchDTOS.size(), userName, password);
            System.err.println("执行任务11111");
            run(driverPath, lmsWatchDTO);
        }

        if (watchDTOS.size() == 0) {
            log.info("课程所有用户均已执行完毕，系统将在20min后结束");
            TimeUnit.MINUTES.sleep(20);
            return;
        }
    }


    public static void run(String driverPath, LmsWatchDTO lmsWatchDTO) throws Exception {

        String userName = lmsWatchDTO.getUsername();
        String pwd = lmsWatchDTO.getPassword();
        String courseName = lmsWatchDTO.getCourseName();

        boolean isStartChrome = true;


        String completeInfoFilePath = "libs//lmsAnswerInfo//" + courseName + "//" + userName + "-bigHomework.txt";
        File completeInfoFile = new File(completeInfoFilePath);

        if (completeInfoFile.exists()) {

            InputStream completeInfoStream = new FileInputStream(completeInfoFile);
            String completeInfoStr = IOUtils.toString(completeInfoStream, "UTF-8");
            List<CompleteInfo> completeInfoList = Lists.newArrayList();
            try {
                completeInfoList = JSONObject.parseArray(completeInfoStr, CompleteInfo.class);
            } catch (Exception e) {
            }
            if (completeInfoList.size() > 0 && completeInfoList.get(0).isComplete()) {
                isStartChrome = false;
            }
        }

        if (!isStartChrome) {
            return;
        }



        ChromeDriver driver = Util.getDriver(driverPath);
        try {




            String url = "https://menhu.pt.ouchn.cn/site/ouchnPc/index";
            driver.get(url);
            Thread.sleep(3000);


            //  pool.submit(() -> LmsUtil.login(driver, userName, pwd));
            LmsUtil.login(driver, userName, pwd);


            TimeUnit.SECONDS.sleep(10);


            log.info("开始答题.........{}", courseName);
            study(driver, userName, courseName);


        } catch (Exception e) {

        } finally {
            try {
                driver.close();
                Util.switchToFirst(driver);
                driver.quit();
            } catch (Exception e1) {

            }
        }
    }


    private static void study(WebDriver driver, String userName, String subjectName) throws Exception {

        Map<String, String> answers = Maps.newHashMap();
        answers.put("习近平新时代中国特色社会主义思想", "试卷代号：1319\n" +
                "国家开放大学2022年春季学期期末统一考试\n" +
                "习近平新时代中国特色社会主义思想  试题（开卷）\n" +
                "\n" +
                "论述题（100分）：\n" +
                "2012年11月29日，习近平在参观《复兴之路》展览时首次提出中国梦。中华民族伟大复兴的中国梦一经提出，就产生了强大的号召力和感染力。中国梦，反映了近代以来一代又一代中国人的美好夙愿，反映了既创造过辉煌、又历经过苦难的中华民族对复兴的深刻理解和殷切渴望，进一步揭示了中华民族的历史命运和当代中国的发展走向，指明了全党全国各族人民共同的奋斗目标，成为激励中华儿女团结奋进、开辟未来的一面精神旗帜。理论联系实际，阐述你对中国梦科学内涵的理解。\n" +
                "理解中国梦，第一位的问题是搞清中国梦的基本内涵中国梦的基本内涵就是实现中华民族伟大复兴，具体来说就是要实现国家富强、民族振兴、人民幸福。这个内涵是对于近代中国历史的科学总结，更是对未来中国发展的科学的展望和预测。\n" +
                "理解中国梦，必须认识其主体和力量所在。这个主体和力量就是中国人民，就是全体中华儿女。从整个中国近代史的历程来看，是否以人民为主体，是否以人民为依靠力量，决定着中国的兴衰成败。新中国的成立及其带来的整个民族复兴事业的进步，都证明了这个道理。而同志提出中国梦突出强调了要以人民为主体力量，其着眼点在于让全体中国人民“共同享有人生出彩的机会，共同享有梦想成真的机会，共同享有同祖国和时代一起成长与进步的机会”。\n" +
                "理解中国梦，必须认识其实现路径。从大的方面来说，这个问题已经获得了解决—这就是中国特色社会主义发展道路。但是就实现中国梦的大的目标：国家富强、民族振兴、人民幸福这几点来看，我们要克服的困难还很多，我们要走的具体路径还有不确定的地方。发展路径问题关乎中国梦的实践效果，关乎中国现代化的最终命运。同志在阐述中国梦时把坚持中国特色社会主义道路放在关键的位置，使得中国梦的实现有了明确的方向和现实的基础。\n" +
                "理解中国梦，必须认识其历史定位。为何在今天中国梦问题获得社会广泛的认同和共鸣?一个重要的现实背景就是中国今天的发展既得到了全世界的关注和一定程度的认同，也增强了中国人民探索富有自己特色现代化发展道路的自觉性和自信心。同时，中国现有发展中出现的问题也引起了国内外的关注，继续发展的困境也促发了人们的困惑。在某种程度的无所适从，又怀有希望的心理驱动下，人们普遍地渴望用一种更朴素、更能凝聚人们共识的方式来表达我们对于未来探索的信心。\n" +
                "习近平总书记在参观《复兴之路》展览时提出：“实现中华民族伟大复兴，就是中华民族近代以来最伟大的梦想”。 “中国梦归根到底是人民的梦，必须紧紧依靠人民来实现，必须不断为人民造福。”这是习近平同志在当选国家主席之后的就职宣言。\n" +
                "在我看来，社会发展归根结底是要实现人的全面发展，现代化最终要实现的是人的现代化。这从理论上解释了为何“中国梦归根到底是人民的梦”。\n" +
                "我认为,实现中华民族伟大复兴就是中华民族近代最伟大的中国梦，因为这个梦想，它是凝聚和寄托了几代中国人的这样一种宿愿，它体现了中华民族和中国人民的整体利益，它是每一个中华儿女的一种共同的期盼。历史告诉我们，我们每一个人的个人前途命运，都是和这个国家的前途命运，和这个民族的前途命运密切相关的。国家好，民族好，大家才会好……\n" +
                "中国梦是民族的梦。也是每个中国人的梦。只要我们紧密团结，万众一心，为实现共同梦想而奋斗，实现梦想的力量就无比强大，我们每个人为实现自己梦想的努力就拥有广阔的空间。生活在我们伟大祖国和伟大时代的中国人民，共同享有人生出彩的机会，共同享有梦想成真的机会，共同享有同祖国和时代一起成长与进步的机会。中国梦归根到底是人民的梦，必须紧紧依靠人民来实现，必须不断为人民造福。我坚信中国共产党的领导下，全面建成小康社会的目标一定能够实现。我坚信在中国共产党的领导下，把我国建成富强、民主、文明、和谐的社会主义现代化国家的目标一定会实现。我更坚信在中国共产党的领导下，中华民族伟大复兴的梦想一定会实现。\n" +
                "对于这个梦想的实现，离不开我们大家的一起努力，作为当代青年大学生，应深感使命光荣、责任重大，我们也要为自己的梦想负责。\n");

        answers.put("中国近现代史纲要", "国家开放大学2022年春季学期期末统一考试\n" +
                "中国近现代史纲要    试题A（开卷）\n" +
                "\n" +
                "\n" +
                "论述题：历史是最好的教科书。旧民主主义革命时期，历次的反侵略战争，都是以中国失败、中国政府被迫签订丧权辱国的条约而告结束。造成近代中国如此深重的苦难，除了列强的原因，清政府自己又该负怎样的责任呢？（100分）\n" +
                "答： 近代中国如此深重的苦难， 除了列强原因， 清政府应该负全部责任。 列强侵略只是外因， 而且如果清政府领导的中国如果能够强大， 列强也不敢侵略， 而清政府自身的原因却是内因。\n" +
                "社会制度腐败： （1） 吏治和军队腐败 1840 年以后， 中国封建社会逐步变成了半殖民地半封建社会。 统治中国的清王朝， 从皇帝到权贵， 大都昏庸愚昧， 不了解世界大势，不懂得御敌之策。 许多官员贪污腐化， 克扣军饷。 不少将帅贪生怕死， 临阵脱逃。\n" +
                "（2）战争指导思想错误 ， 既害怕列强， 更惧怕人民指导思想的错误是与其政治立场分不开的。 统治者以“和外安内” 为战争指导思想。 多数权贵害怕列强的坚船利炮，丧失了抵抗的信心， 为了个人和统治者的私利不惜出卖国家民族的利益。 他们尤其惧怕民群众， 担心人民组织起来后危及封建统治， 所以， 屡屡压制、 打击和破坏人民群众和爱国官兵的反侵略斗争， 不惜割地赔款向列强谋求妥协。\n" +
                "（3）清朝后期，封建政治集团闭关自锁、闭目塞听，愚昧无知。清朝封建统治阶级的反动腐败已成不可挽回之势。在1840年鸦片战争以后，近代中国社会开始了屈辱史－中国逐渐沦为半殖民地半封建的社会。造成政治、经济、军事等方面的全面落后。战争爆发后，腐朽的清政府，一味妥协“主和”，终于导致战争的节节失利。腐朽的统治阶级甚至于在国家危难之秋，大搞庆典，挪用军费，置国家利益于不顾。虽然也有部分开明官员“主战”，也有提出了“师夷长技以制夷”…，但主要都是为了自身的封建统治。所以当时的中国政府不能很好地组织反侵略战争，不能有效地发动和利用人民群众的力量，甚至压制人民群众的反侵略斗争。面对列强的侵略，“主和派”的投降卖国，输了割地赔款，赢了还是割地赔款签约，清政府彻底成为列强统治中国的傀儡。\n" +
                "（4）军事、经济和科学技术的落后，腐朽没落的封建主义不能对抗新的资本主义。由于英国是资本主义国家并率先实行工业革命，实力雄厚，武器先进。应着政治的腐败是经济的落后，中国几千年一直以封建自然经济为主导，小农经济有它根深蒂固的局限性：自私、狭隘、保守、落后。它不能为反抗列强侵略提供合格的经济基础。经济技术的落后直接造成军事装备的落后，以及反抗侵略者的军事科学技术和战略战术思想的滞后。\n" +
                "原清政府眼界封闭， 思想传统， 自高自大， 对现代科学技术缺乏远见和兴趣， 错失了良好的发展机遇， 清政府管理混乱， 官场腐败， 民不聊生， 导致内部起义内乱频发，怨声载道。 没有先进的工业， 以薄弱的农业维持着国家的运转。清在这个过程中， 其统治的自卑性， 保守性， 都不是悲剧的根本， 而只是在悲剧必然出现的前提上， 加重了这一进程罢了。简单说由于清政府的闭关锁国， 封建愚民统治导致晚清的中国实力远远落后于西方列强。 落后就会挨打， 才造成了中国近代如此深重的苦难。 总之清政府在方方面面， 缺乏上进心， 缺乏敏锐的发展意识， 所有的责任都应该归咎于清政府。\n");

        answers.put("习近平总书记教育重要论述研究", "试卷代号：1524\n" +
                "国家开放大学2022年春季学期期末统一考试\n" +
                "\n" +
                "习近平总书记教育重要论述研究    试题（开卷）\n" +
                "\n" +
                "一、名词解释（共3道题，每题10分，共30分）\n" +
                "1.“四有”好老师\n" +
                "“两个维护”是指坚决维护习近平总书记党中央的核心、全党的核心地位，坚决维护党中央权威和集中统一领导。带头做到“两个维护”，是加强中央和国家机关党的建设的首要任务。\n" +
                "2.“四为服务”\n" +
                "四有好老师是指有理想信念、有道德情操、有扎实学识、有仁爱之心的“四有”好老师。出自2014年第30个教师节前夕，习近平总书记考察北京师范大学时勉励广大师生的讲话。\n" +
                "3.“两个维护”\n" +
                "“四个意识”：是指政治意识、大局意识、核心意识、看齐意识。这“四个意识”是2016年1月29日中共中央政治局会议最早提出来的。习近平总书记在庆祝中国共产党成立95周年大会上的讲话强调，全党同志要增强政治意识、大局意识、核心意识、看齐意识，切实做到对党忠诚、为党分忧、为党担责、为党尽责。\n" +
                "\n" +
                "\n" +
                "二、简答题（共2道题，每题15分，共30分）\n" +
                "4．请简述习近平总书记教育重要论述形成的时代背景。\n" +
                "1.坚持教育为人民服务,实现好、维护好、发展好最广大人民群众的根本利益,在更高水平上不断满足人民群众对更好教育的需要。\n" +
                "2.坚持教育为中国共产党治国理政服务,通过教育改革发展,举旗帜、聚民心、育新人、兴文化、展形象、不断巩固党的执政基础。\n" +
                "3.坚持教育为巩固和发展中国特色社会主义制度服务,通过教育发展引导人们增强制度自信,树立为中国特色社会主义共同理想而奋斗的信念和信心,最终使广大教育者都自觉成为中国特色社会主义制度的拥护者和捍卫者。\n" +
                "4.坚持教育为改革开放和社会主义现代化建设服务,为改革开放和社会主义现代化建设提供智力支持。\n" +
                "5. 请简述办好各级各类教育的基本内容。\n" +
                "办好各级各类教育的基本内容是努力办好基础教育、实现高等教育内涵式发展、建设中国特色职业教育体系、构建服务全民的终身教育体系\n" +
                "各级各类教育均取得较大成就：学前教育继续较快发展，普惠性幼儿园快速增加；义务教育普及水平保持高位，大班额、超大班额比例持续下降；高中阶段教育普及攻坚稳步推进。\n" +
                "\n" +
                "三、论述题（1道题，共40分。本题要求有理论联系实际的内容，最高得分可占15分；答题如无此内容，将予以扣分。）\n" +
                "6．各级各类学校党组织要把党建工作作为办学治校的重要工作，把抓好学校党建工作作为办学治校的基本功。请结合实际，谈谈如何全面加强和改进教育系统党的建设？\n" +
                "党的十九届五中全会审议通过的《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》提出了到2035年建成教育强国的奋斗目标，明确了“十四五”时期建设高质量教育体系的战略任务。这为制定教育“十四五”规划和教育中长期改革与发展，为谋划和推进教育现代化提供了遵循。\n" +
                "新中国70多年来特别是改革开放40多年来，我国教育事业取得了“当今世界殊”的辉煌成就。可以说，建设高质量教育体系、建设教育强国，我们有着坚实的基础和足够的自信。\n" +
                "加强党对教育工作的全面领导，是建设高质量教育体系和建设教育强国的“定海神针”。我国有独特的历史、独特的文化、独特的国情，决定了我国必须走自己的教育发展道路，扎实办好中国特色社会主义教育。中国特色社会主义教育，特就特在我们的教育是党领导下的教育。党的十九届五中全会明确了“十四五”时期经济社会发展的指导思想，提出了五个必须遵循的重要原则，其中坚持党的全面领导，摆在“五个坚持”首位。贯彻落实党的十九届五中全会精神，首要就是深刻领会“坚持党的全面领导”的极端重要性，牢牢掌握党对教育工作的领导权，使各级各类学校成为坚持党的全面领导的坚强阵地，这一点任何时候都不能有丝毫动摇。各级各类学校党组织要把党建工作作为办学治校的重要工作，把抓好学校党建工作作为办学治校的基本功，把党的教育方针全面贯彻到学校工作各方面。要贯彻落实新时代党的组织路线，坚持正确用人导向，把政治过硬、品行优良、业务精通、锐意进取的优秀干部选配到各类学校领导岗位上来。要发挥基层党组织作用，使基层党组织成为师生最贴心、最信赖的组织依靠，成为学校教书育人的坚强战斗堡垒，把教师和学生党员的先锋模范作用发挥好，把广大教职员工和学生最广泛地凝聚团结起来。要统筹发展和安全两件大事，压紧压实教育系统意识形态风险防控主体责任，保证教育系统安全，特别是政治安全，这是压倒一切的工作。\n" +
                "新的发展阶段，教育事业面临新使命新任务。建设高质量教育体系和建设教育强国，必须从“国之大计、党之大计”的战略定位来考量教育，牢记“为党育人、为国育才”使命，全面提升思想政治工作质量，培育和践行社会主义核心价值观，持续落实立德树人根本任务，努力培养德智体美劳全面发展的社会主义建设者和接班人。立德树人具有鲜明的时代性，新时代的立德树人必定有新任务新要求。我国是中国共产党领导的社会主义国家，这就决定了我们的教育必须把培养社会主义建设者和接班人作为根本任务，培养一代又一代拥护中国共产党领导和我国社会主义制度、立志为中国特色社会主义奋斗终身的有用人才。这是教育工作的根本任务，也是教育现代化的方向和目标。教育改革发展到今天，落实立德树人根本任务的有利条件越来越多。坚持立德树人，重在落实。要健全立德树人的落实机制，把立德树人融入思想道德教育、文化知识教育、社会实践教育各环节，贯穿基础教育、职业教育、高等教育各领域。学科体系、教学体系、教材体系、管理体系要围绕这个目标来设计，教师要围绕这个目标来教，学生要围绕这个目标来学。\n" +
                "持续落实立德树人根本任务，要坚定信心，理直气壮办好学校思政课，不断增强思政课的思想性、理论性和亲和力、针对性，满足学生成长发展需求和期待；又要发挥好各门课程的育人功能，解决好各类课程和思政课相互配合的问题，形成协同效应。思想政治工作是学校各项工作的生命线，各级党委、各级教育主管部门、学校党组织都必须紧紧抓在手上。要遵循思想政治工作规律、教书育人规律和学生成长规律，把思想政治工作贯穿教育教学全过程，特别是要运用新媒体新技术使工作活起来，推动思想政治工作传统优势同信息技术高度融合，增强时代感和吸引力，做到因事而化、因时而进、因势而新，实现全员育人、全程育人、全方位育人，不断提高工作能力和水平。\n" +
                "全面贯彻党的教育方针，坚持“五育并举”，是持续落实立德树人根本任务的内在要求。要不折不扣贯彻落实《关于全面加强新时代大中小学劳动教育的意见》《关于全面加强和改进新时代学校体育工作的意见》和《关于全面加强和改进新时代学校美育工作的意见》，加强和改进学校体育美育，广泛开展劳动教育，发展素质教育，促进学生全面发展，培养学生爱国情怀、社会责任感、创新精神、实践能力。\n" +
                "始终坚持党的领导，持续落实立德树人根本任务，要聚焦到高质量发展这个主题上来。“十四五”时期经济社会发展要以推动高质量发展为主题，这是根据我国发展阶段、发展环境、发展条件变化作出的科学判断。新时代新阶段的发展必须贯彻新发展理念，必须是高质量发展。当前，我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾，发展中的矛盾和问题集中体现在发展质量上。这就要求我们必须把教育发展质量问题摆在更为突出的位置，着力提升教育发展的质量和效益。当前，要以高质量发展为主题，科学制定好、认真落实好教育“十四五”规划，为2035年总体实现教育现代化、建成教育强国开好局、起好步。\n" +
                "要坚持把改革创新作为实现教育高质量发展的关键一招和根本动力。要抢抓机遇，乘势而上，纵深推进教育领域的综合改革，切实增强改革的系统性整体性协同性，不断提升教育治理体系和治理能力现代化水平。教育评价事关教育发展方向，有什么样的评价指挥棒，就有什么样的办学导向。要以深化新时代教育评价改革为切入点，深入贯彻《深化新时代教育评价改革总体方案》，构建富有时代特征、彰显中国特色、体现世界水平的教育评价体系，推进党委和政府科学履行教育职责，推进学校落实立德树人根本任务，推进教师践行教书育人使命，促进学生德智体美劳全面发展，为建设高质量教育体系、建设教育强国和实现教育现代化，提供有力保障");

        answers.put("毛泽东思想和中国特色社会主义理论体系概论", "答：农村包围城市，最后夺取全国胜利的革命道路，是以毛泽东为代表的中国共产党人在领导中国革命实践中逐步摸索出来的一条具有中国特色的发展道路和总战略。其基本内容是，中国民主革命首先在敌人统治力量比较薄弱的农村，发动农民武装暴动，建立人民军队，建立革命根据地，把武装斗争、土地革命、建立政权结合起来，使之建成支持长期革命战争的战略基地。依托根据地积累发展革命力量，随着革命战争、人民武装和根据地的发展，逐步造成农村包围城市的战略态势，最后夺取全国胜利。继1927年8月1日南昌起义后，毛泽东于当年9月，领导湘赣边界秋收起义，组成工农革命军第一军第一师，共五千余人。经转战和三湾改编后，毛泽东率领这支不足千人的部队于10月下旬进入了井冈山地区，开始创建中国共产党领导的第一个农村革命根据地。1928年4月，朱德、陈毅率南昌起义余部和湘南起义农军，在毛泽东率部接应下，两军在井冈山会师，合编为工农革命军第四军，朱德任军长，毛泽东任党代表和军委书记，壮大了井冈山革命根据地的军事力量，对红军和土地革命战争的发展具有重大意义和影响。在土地革命战争时期，在共产党的领导下，先后在南方和陕甘地区建立了十几个革命根据地。毛泽东领导全党全军在抗日战争钟建立了19个大型根据地；解放战争钟建立了东北根据地，发展了华北、华东、华中、西北等广大解放区。这些根据地和解放区的建立与发展，逐步扩大了农村包围城市的战略态势，对最后夺取全国胜利起了决定性的战略作用。以毛泽东为代表的中国共产党人创立的这条革命道路，是世界无产阶级革命战争史上仅有的，发展了马克思列宁主义暴力革命的学说。创立了无产阶级领导的革命战争首先把主要战略方向指向农村的理论和斗争艺术。法国的“巴黎公社”，俄国的“十月革命”，都是把主要战略方向首先指向中心城市。半殖民地半封建的旧中国，是一个落后的农业大国，三座大山的主要力量盘踞在中心城市，农村是它们通知的薄弱环节。毛泽东毅然决定把主要战略方向首先指向农村，建立农村革命根据地，走农村包围城市的革命道路。成功地解决了依托根据地积累、发展革命力量的问题。随着根据地发展、扩建，革命力量不断得以发展、壮大。解决了以农民为主体发展革命军队、进行革命战争的问题。解放了的广大翻身农民，为保卫自己的利益，踊跃参军、支前。中国革命战争，实质上是中国共产党领导下的农民战争。成功地解决了由游击战向运动战发展的问题。随着根据地的扩大，人民武装随之扩大，并由游击队向正规军发展，从而解决了由游击战向运动战、正规战发展的问题。中国人民和人民军队，在中国共产党、毛泽东的领导下，长期坚持、坚决按照这条革命道路指引的方向，发展根据地和革命战争，开展各种革命运动，经过二十多年艰苦卓绝的斗争，到1949年，终于推翻了三座大山在中国的通知，夺取了全国的胜利，建立了中华人民共和国。实践证明，这是中国革命唯一正确的道路。这是建设无产阶级领导的新型人民军队的重要开端。随后，部队进入湘赣边界的井冈山地区，开创井冈山革命根据地，开始了农村包围城市道路的伟大探索。 1928年4月，朱德、陈毅领导的南昌起义部队和湘南起义的农军，转移到井冈山地区，与毛泽东领导的工农革命军会师。随后，两军合编为工农革命军第四军。同年5月，中共中央决定各地工农革命军一律改称中国工农红军，工农革命军第四军改称为中国工农红军第四军，简称红四军，朱德任军长、毛泽东任党代表，著名的“朱毛红军”由此而来。 到1928年秋冬之际，井冈山的斗争已经坚持一年了。在这一年中有成功也有失败，有经验也有教训，有必要对一年的革命实践做一点回顾总结。为此，毛泽东写作了《中国的红色政权为什么能够存在》《井冈山的斗争》这两篇重要著作，提出了“工农武装割据”的思想，分析了中国的红色政权能够存在和发展的原因，回答了一些人提出的“红旗到底打得多久”的疑问。在这两篇文章中，对工农武装割据、建立农村革命根据地的重要性作了充分的肯定。 1929年12月28日和29日，红军第四军第九次党代表大会在福建省上杭县古田镇召开。《古田会议决议》总结了红四军成立以来在部队建设上的基本经验教训，确立了人民军队建设的基本原则，成功地解决在长期农村游击战争环境下，在党员和红军的来源大部分是农民的情况下如何建设一个无产阶级政党、如何保持党对人民军队绝对领导这样一个重大问题。 古田会议之后，毛泽东写作了《星星之火，可以燎原》一文，强调红军、游击队和红色区域的建立和发展，是半殖民地中国在无产阶级领导之下的农民斗争的最高形式，是促成中国革命高潮的最重要因素。以毛泽东为书记的红四军前敌委员会还明确提出了“农村工作是第一步，城市工作是第二步”的思想。这就标志着农村包围城市、武装夺取政权思想的初步形成。特别是经过第五次反“围剿”的失败和红军长征，全党对于“左”倾教条主义的错误有了更清醒的认识，“城市中心论”在党内失去了市场，开始有了中国革命必须也只能走农村包围城市道路的自觉。 全国抗战爆发前后，毛泽东总结土地革命战争时期的经验，吸取了抗日战争的新鲜经验，撰写了《中国革命战争的战略问题》《实践论》《矛盾论》《战争和战略问题》《中国革命和中国共产党》等一系列理论著作，形成了完整的农村包围城市道路理论。 毛泽东强调，中国是一个半殖民地半封建国家，同时又是一个政治、经济、文化各方面发展不平衡，半封建经济占优势而土地广大的国家，这就决定了中国革命现阶段的资产阶级民主革命性质，也决定了中国革命的主要方式是武装斗争。同时，由于资本主义的发展不充分，中国工人阶级人数少，占80%以上的人口是农民，农民就成为中国革命的主力军，在中国，武装斗争实质上即是农民战争，城市是敌人统治的中心而农村则是相对薄弱的环节，中国革命必须将重点放在农村，先在农村积聚力量。中国政治、经济、文化的不平衡和地域广大，又为在农村建立革命根据地提供了可能性。因此，农村包围城市、武装夺取政权就成为中国革命唯一正确的道路\n");

        answers.put("思想道德与法治", "一、材料分析题（80分）\n" +
                "集体主义原则写在中国的历史长河中，写在中国人民的生活实践中，体现为古而有之的“天下兴亡，匹夫有责”的情怀，体现为战火纷飞年代的“苟利社稷，死生以之”，体现为和平建设时期的“敢教日月换新天”，体现为复兴路上的“个人梦融入中国梦”，更体现为抗击疫情中的齐心协力、众志成城、同舟共济、守望相助。\n" +
                "在全国抗击新冠肺炎疫情表彰大会上，习近平总书记强调，伟大抗疫精神，同中华民族长期形成的特质禀赋和文化基因一脉相承，是爱国主义、集体主义、社会主义精神的传承和发展，是中国精神的生动诠释，丰富了民族精神和时代精神的内涵。\n" +
                "请理论联系实际分析：\n" +
                "怎样理解集体主义是社会主义道德的原则？\n" +
                "答：集体主义是社会主义道德的基本原则.\n" +
                "（1）集体主义是人类社会本质的必然选择.\n" +
                "确立社会主义道德原则是集体主义,这是社会本质的必然要求.以社会为本位的集体主义,这是社会主义社会确立的价值目标.\n" +
                "（2）集体主义是社会经济关系所表现出来的利益决定的.\n" +
                "社会主义经济关系的基础是劳动人民共同占有生产资料,它反映的最基本的利益关系是劳动人民的共同利益.而反映这个基础的道德观念,必然是社会主义的集体主义.\n" +
                "（3）集体主义是调节个人和社会利益的基本原则.\n" +
                "在社会主义条件下,明确了社会主义道德原则是集体主义,便能正确地处理好人与人之间的各种利益关系,正确处理好个人利益同社会利益、集体利益、国家利益之间的关系.\n" +
                " 生命至上，集中体现了中国人民深厚的仁爱传统和中国共产党人以人民为中心的价值追求。在保护人民生命安全面前，我们必须不惜一切代价，我们也能够做到不惜一切代价，因为中国共产党的根本宗旨是全心全意为人民服务，我们的国家是人民当家作主的社会主义国家。我们果断关闭离汉离鄂通道，实施史无前例的严格管控。作出这一决策，需要巨大的政治勇气，需要果敢的历史担当。为了保护人民生命安全，我们什么都可以豁得出来！从出生仅30多个小时的婴儿到100多岁的老人，从在华外国留学生到来华外国人员，每一个生命都得到全力护佑，人的生命、人的价值、人的尊严得到悉心呵护。我们秉承“天下一家”的理念，不仅对中国人民生命安全和身体健康负责，也对全球公共卫生事业尽责。我们发起了新中国成立以来援助时间最集中、涉及范围最广的紧急人道主义行动，为全球疫情防控注入源源不断的动力，充分展示了讲信义、重情义、扬正义、守道义的大国形象，生动诠释了为世界谋大同、推动构建人类命运共同体的大国担当！\n" +
                " 集体主义作为社会主义道德的基本原则,首先是社会主义基本制度的客观要求.社会主义公有制是联合起来的全体劳动者共同占有生产资料的所有制.它使每一个劳动者都享有生产资料的所有权,都有劳动的权利和按劳动分配的权利.这就为坚持集体主义原则创造了物质前提.在公有制前提下,劳动者为社会劳动(为国家和集体的需要而劳动)的同时就是为自己劳动,为国家和集体的整体利益而奋斗就包含着劳动者的个人利益,国家利益、集体利益与个人利益是必然地内在地结合在一起的.因此,当个人利益同国家利益、集体利益发生矛盾时,个人要顾全大局,个人利益要服从国家利益和集体利益.其次,集体主义原则也包含着维护和保障正当的个人利益.我们提倡按劳分配要为全体人民的物质利益奋斗,同时其中包含着每个人一定的物质利益.没有对个人正当利益的保护,就没有个人积极性的发挥,因而社会主义国家和集体的利益也不可能有效地实现.但是这决不是提倡个人抛开国家、集体和别人,专门为自己的物质利益奋斗的极端个人主义和利己主义.要是那样,以集体主义为原则的社会主义道德建设就会落空.\n" +
                "     如前所述,在社会主义社会里,集体利益是个人利益的基础和保证.离开了无产阶级和劳动人民的集体利益和集体力量,就没有无产阶级的个人利益和个人解放；个人正当利益的不断实现,个性的全面发展,要依靠无产阶级的集体事业的发展；只有通过无产阶级和劳动群众的联合力最,才能获得个人全面发展的条件.在我国,劳动者个人利益的实现,要以个人对社会的贡献为前提,同时,国家和集体又为个人才能的发挥提供条件,为个人利益提供保证.因此,社会主义体主义原则要求把这二者统一起来,正确处理个人利益与集体利益的关系.\n" +
                "\n" +
                "二、简答题（20分）\n" +
                "我国的特别行政区和民族区域自治地方，都是我国不可分割的地方行政区，享有一定自治权，两者有什么区别呢？\n" +
                "1、设立地区不同：民族自治区是在少数民族聚居的地方实行自治的行政区域，特别行政区是一国两制下的香港、澳门以及将来大陆统一的台湾等特定地区。\n" +
                "2、设立的目的不同：民族自治区是为了解决我国的民族问题，实现民族平等、民族团结、各民族共同繁荣，从而捍卫国家的统一和各民族的共同利益。特别行政区是在一国两制下为了妥善解决香港、澳门、台湾地区问题，实现祖国和平统一大业。\n" +
                "3、实行的社会制度不同：民族自治区和经济特区都实行社会主义制度，实施宪法和全国统一的法律、统一的司法制度。特别行政区是在一国两制付诸实施后的相当长时间内，在中华人民共和国这个统一主权的国家里，在祖国统一的前提下，保持原有的资本主义制度长期不变。\n");

        answers.put("马克思主义基本原理", "试卷代号：1395\n" +
                "国家开放大学2022年春季学期期末统一考试\n" +
                "马克思主义基本原理    试题（开卷）\n" +
                "\n" +
                "论述题：\n" +
                "1937年7月，毛泽东同志在《实践论》中指出：“通过实践而发现真理，又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识，又从理性认识而能动地指导革命实践，改造主观世界和客观世界。实践、认识、再实践、再认识，这种形式，循环往复以至无穷，而实践和认识之每一循环的内容，都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论，这就是辩证唯物论的知行统一观。”\n" +
                "结合实际，请回答下面的问题：\n" +
                "1.阐述实践在认识活动中的作用？（50分）\n" +
                "2.如何理解“实践与认识的辩证运动，是一个由实践到认识、再实践、再认识，循环往复以至无穷的辩证发展过程”？（50分）\n" +
                "1.阐述实践在认识活动中的作用？（50分）答：实践是认识的基础，它对认识的决定作用主要表现在一下四个方面:第一:实践产生了认识的需要。社会实践的需要始终是人类认识发展的强大动力。\n" +
                "第二:实践为认识提供了可能。人类实践活动提出的问题归根结底只能依靠和通过实践来解决。实践创造出必要的物质条件和手段，使人的认识能够不断深入。\n" +
                "第三:实践使认识得以产生和发展。我们必须充分重视实践经验，并加以总结提高，推动认识不断发展。\n" +
                "总之，人的认识是从实践产生，为实践服务，随实践发展，并受实践检验的。认识依赖于实践，离开实践的认识是根本不可能。认识和实践总是相互作用的，认识反映客观事物本质和规律性的理性认识，对实践有着巨大的指导作用。\n" +
                "2.如何理解“实践与认识的辩证运动，是一个由实践到认识、再实践、再认识，循环往复以至无穷的辩证发展过程”？（50分）答：实践,认识.再实践,再认识.循环往复心至无穷.这就是认识的辩证运动过程，认识发展的过程就是主观和客观的矛盾展开的过程,但是,主观和客观的矛盾只有通过认识和实践的矛盾运动才能够具体化,才能够表现出来,才能够真正展开.这也就是说,主观和客观的矛盾是在实践中产生和解决的.客观实践是具体的、历史的,因而主观对客观的认识也是具体的、历史的.主观与客观的统一,认识和实践的统一,都是具体的历史的统一.所谓“具体的历史的统一”,就是说,人们的认识和客观过程的符合是在一定的具体历史条件下的符合,是在社会实践发展的一定的具体历史阶段上的符合.人们的认识超越于客观实践的发展阶段或落后于客观实践的发展阶段,都是离开了主观和客观、认识和实践的具体的历史的统一.当着客观过程向前推移,具体条件发生重大变化,实践发展到新的历史阶段的时候,如果认识仍然停留在原来的阶段上,那么,认识就脱离了客观实践在新阶段上的具体的历史特点,就会使落后于实际。\n" +
                "\n");


        answers.put("", "");
        // 进入课程首页
//        try {
//
//            for (WebElement we : driver.findElements(By.cssSelector("div[class='ouchnPc_index_course_div']"))) {
//                String textContent = we.getText();
//                System.err.println("text:" + textContent);
//                if (textContent.contains(subjectName)) {
//                    we.findElement(By.tagName("a")).click();
//                    Thread.sleep(3000);
//                    break;
//                }
//            }
//            Util.switchToLast(driver);
//
//        } catch (Exception e) {
//
//        }


        // TODO 现在开始获取具体课程所有的答题链接：：

        Map<String, Set<String>> urlMap = Maps.newHashMap();
        urlMap.put("习近平新时代中国特色社会主义思想", Sets.newHashSet("https://lms.ouchn.cn/course/10000001761/learning-activity/full-screen#/10000212967"));
        urlMap.put("中国近现代史纲要", Sets.newHashSet("https://lms.ouchn.cn/course/10000001767/learning-activity/full-screen#/10000213698"));
        urlMap.put("习近平总书记教育重要论述研究", Sets.newHashSet("https://lms.ouchn.cn/course/10000001768/learning-activity/full-screen#/10000208618"));
        urlMap.put("毛泽东思想和中国特色社会主义理论体系概论", Sets.newHashSet("https://lms.ouchn.cn/course/10000001766/learning-activity/full-screen#/10000213345"));
        urlMap.put("思想道德与法治", Sets.newHashSet("https://lms.ouchn.cn/course/10000001769/learning-activity/full-screen#/10000213900"));
        urlMap.put("马克思主义基本原理", Sets.newHashSet("https://lms.ouchn.cn/course/10000001772/learning-activity/full-screen#/10000228315"));

        // https://lms.ouchn.cn/course/10000001767/learning-activity/full-screen#/10000213698

        for (String url : urlMap.get(subjectName)) {
            try {
                // 排除不计入考核的作业

                driver.get(url);
                Thread.sleep(8000);
                // 点击我的作业
                driver.findElement(By.cssSelector("span[class='tab-title submission-tab left']")).click();
                Thread.sleep(1000);

                // TODO 这里判断是否提交了作业
                boolean isSubmit = false;

                for (WebElement spanWe : driver.findElements(By.cssSelector("span[class^='left submission-score error-tag ng-scope']"))) {
                    if ("未评分".equals(spanWe.getText())) {

                        String completeInfoFilePath = "libs//lmsAnswerInfo//" + subjectName + "//" + userName + "-bigHomework.txt";
                        File completeInfoFile = new File(completeInfoFilePath);
                        List<CompleteInfo> completeInfoList = Lists.newArrayList();
                        CompleteInfo completeInfo = new CompleteInfo();
                        completeInfo.setHomeworkUrl(url);
                        completeInfo.setComplete(true);
                        completeInfoList.add(completeInfo);
                        FileUtils.write(completeInfoFile, JSONObject.toJSONString(completeInfoList, SerializerFeature.PrettyFormat), "utf-8");
                        log.info("该课程已经评分啦：{}", subjectName);

                        isSubmit = true;
                        break;
                    }
                }

                if (isSubmit) {
                    continue;
                }

                // 点击写作业
                for (WebElement spanWe : driver.findElements(By.cssSelector("span[class='ng-scope']"))) {
                    if (spanWe.getText().contains("写作业")) {
                        spanWe.click();
                        Thread.sleep(2000);
                        break;
                    }
                }

                // homework-mode-choice ng-untouched ng-valid select2-offscreen ng-not-empty ng-dirty ng-valid-parse ng-valid-server
                WebElement selectWe = driver.findElement(By.cssSelector("select[class^='homework-mode-choice']"));
                Select select = new Select(selectWe);
                select.selectByIndex(0);

                Thread.sleep(2000);

                // 找到提交大作业的主界面
                WebElement studentWorkAreaWe = driver.findElement(By.cssSelector("div[class='main-area multiple-choice-homework-student-submission']"));

                // 先点击聚焦 然后发送作业....
                studentWorkAreaWe.findElement(By.cssSelector("div[class='simditor']")).click();
                Thread.sleep(2000);
                String homeWorkAnswers = answers.get(subjectName);
                if (Strings.isNullOrEmpty(homeWorkAnswers)) {
                    continue;
                }
                studentWorkAreaWe.findElement(By.cssSelector("div[class='simditor-body needsclick']")).sendKeys(homeWorkAnswers);
                Thread.sleep(2000);
                // 交付作业
                for (WebElement btnWe : driver.findElements(By.tagName("button"))) {
                    if (btnWe.getText().contains("交付作业")) {
                        btnWe.click();
                        Thread.sleep(2000);
                        break;
                    }
                }


                // 提交答题并确认提交 button button-green ng-scope
                // Thread.sleep(500000);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        try {
            driver.close();
            Util.switchToFirst(driver);
            driver.quit();
        } catch (Exception e1) {

        }

    }


}
